<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	// * await右侧的表达式一般为promise对象, 但也可以是其它的值
	// * 如果表达式是promise对象, await返回的是promise成功的值
	// * 如果表达式是其它值, 直接将此值作为await的返回值
	{
		// await表达式必须要写在async函数内。
		// async function fn(){
		// 	await 1;
		// }
		// fn();
	}
	{
		// await右侧的表达式一般为promise对象, 但也可以是其它的值
		// const fn = async function(){
		// 	// await右侧是一个成功的Promise实例，那么await表达式的结果为成功值
		// 	// const result = await Promise.resolve(10);
		// 	// console.log(result);// 10
		//
		// 	// await右侧是一个失败的Promise实例，那么会抛出异常,异常的信息为失败值
		// 	const result = await Promise.reject(10);
		// 	console.log(11111,result);// 不会执行
		// }
		// console.log(fn());
	}
	{
		// 如果表达式是其它值, 直接将此值作为await的返回值
		// const fn = async function(){
		// 	const result = await 1;
		// 	console.log(result);// 1
		// }
		// fn();
	}
	{
		// * await必须写在`async`函数中, 但`async`函数中可以没有await
		// * 如果await的promise失败了, 就会抛出异常, 需要通过try...catch捕获处理
		const fn = async function(){
			try{
				const my = await Promise.reject(100);
			}catch (e){
				console.log("catch",e);
			}
		}
		console.log(fn());
	}
</script>
</html>